package com.epoint.clubmanagement.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.epoint.clubmanagement.common.DateUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * Title: Club
 * Description: 俱乐部信息
 *
 * @author sqn
 * @version 1.0.0
 * @date 2021/3/17 0017 上午 11:14
 */

@Data
@Validated
@TableName(value = "club")
@ApiModel(value = "Club俱乐部信息")
public class Club implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    private Integer id;

    /**
     * 俱乐部名称
     */
    @NotBlank(message = "俱乐部名称不能为空")
    @TableField(value = "club_name")
    @ApiModelProperty(value = "俱乐部名称")
    private String clubName;

    /**
     * 活动次数
     */
    @NotNull(message = "活动次数不能为空")
    @TableField(value = "number_of_activities")
    @ApiModelProperty(value = "活动次数")
    private Integer numberOfActivities;

    /**
     * 会员数量
     */
    @NotNull(message = "会员数量不能为空")
    @TableField(value = "number_of_members")
    @ApiModelProperty(value = "会员数量")
    private Integer numberOfMembers;

    /**
     * 俱乐部负责人
     */
    @NotBlank(message = "俱乐部负责人不能为空")
    @TableField(value = "club_leader")
    @ApiModelProperty(value = "俱乐部负责人")
    private String clubLeader;

    /**
     * 备注
     */
    @TableField(value = "remark")
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 类型编号
     */
    @NotNull(message = "类型编号不能为空")
    @TableField(value = "type_id")
    @ApiModelProperty(value = "俱乐部类型编号")
    private Integer typeId;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "createtime")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 创建人
     * 注意！这里需要标记为填充字段
     */
    @TableField(value = "founder", fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建人")
    private String founder;

    /**
     * 修改时间
     * 填充字段
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "updatetime", fill = FieldFill.UPDATE)
    @ApiModelProperty(value = "修改时间")
    private Date updateTime;

    /**
     * 修改人
     * 填充字段
     */
    @TableField(value = "modifier", fill = FieldFill.UPDATE)
    @ApiModelProperty(value = "修改人")
    private String modifier;

    /**
     * 乐观锁
     */
    @Version
    private Integer version;

    /**
     * 逻辑删除
     */
    @TableLogic
    private Integer deleted;

    /**
     * 创建时间转换成年月日
     */
    public String getStrCreationTime() {
        return DateUtil.dateConvert(createTime);
    }

    /**
     * 修改时间转换成年月日
     */
//    public String getUpdatetimeStr() {
//        return DateUtil.dateConvert(updatetime);
//    }

}
